Ext.define('YX.smfr.Operation', {
	  extend : 'Ext.panel.Panel',
	  layout : {
		  type : 'hbox',
		  align : 'stretch'
	  },
	  txtOper : null,
	  txtOperDesc : null,
	  cmbSegment : null,
	  cmbOperType : null,
	  txtErpOper : null,
	  txtErpOperDesc : null,
	  chkCanRepair : null,
	  sfDefaultDefect : null,
	  chkCanStore : null,
	  chkCanRework : null,
	  chkCanPrint : null,
	  chkCanReset : null,
	  numNgCycle : null,
	  chkStartEnd : null,
	  chkAutoMove : null,
	  btnSave : null,
	  btnDelete : null,
	  btnReset : null,
	  frmOperate : null,
	  gridOperate : null,
	  initComponent : function() {
		  this.txtOper = Ext.create('Ext.form.field.Text', {
			    fieldLabel : T.label.operation,
			    labelWidth : 80,
			    flex : 1,
			    allowBlank : false,
			    maxLength : 10,
			    listeners : {
				    scope : this,
				    blur : this.onTxtOperBlur
			    }
		    });
		  this.txtOperDesc = Ext.create('Ext.form.field.Text', {
			    fieldLabel : T.label.operationDesc,
			    labelWidth : 80,
			    flex : 1,
			    allowBlank : false,
			    maxLength : 50
		    });
		  this.cmbSegment = Ext.create('Ext.form.field.ComboBox', {
			    fieldLabel : T.label.segment,
			    labelWidth : 80,
			    flex : 1,
			    valueField : 'key1',
			    displayField : 'data1',
			    store : Ext.create('Ext.data.JsonStore', {
				      fields : ['key1', 'data1'],
				      proxy : {
					      type : 'zbusrpc',
					      module : 'BasViewCommonDataSetupDetailService',
					      extraParams : {
						      groupName : 'SEGMENT'
					      },
					      reader : {
						      root : 'cdsDtlList'
					      }
				      }
			      })
		    });
		  this.cmbOperType = Ext.create('Ext.form.field.ComboBox', {
			    fieldLabel : T.label.type,
			    labelWidth : 80,
			    flex : 1,
			    valueField : 'key1',
			    displayField : 'data1',
			    store : Ext.create('Ext.data.JsonStore', {
				      fields : ['key1', 'data1'],
				      proxy : {
					      type : 'zbusrpc',
					      module : 'BasViewCommonDataSetupDetailService',
					      extraParams : {
						      groupName : 'OPERATION_TYPE'
					      },
					      reader : {
						      root : 'cdsDtlList'
					      }
				      }
			      })
		    });
		  this.txtErpOper = Ext.create('Ext.form.field.Text', {
			    fieldLabel : T.label.erpOper,
			    labelWidth : 80,
			    flex : 1,
			    maxLength : 10
		    });
		  this.txtErpOperDesc = Ext.create('Ext.form.field.Text', {
			    fieldLabel : T.label.erpOperDesc,
			    labelWidth : 80,
			    flex : 1,
			    maxLength : 50
		    });
		  this.chkCanRepair = Ext.create('Ext.form.field.Checkbox', {
			    fieldLabel : T.label.canRepair,
			    labelWidth : 80,
			    flex : 1
		    });
		  this.sfDefaultDefect = Ext.widget('codeviewfieldx', {
			    fieldLabel : T.label.defaultDefect,
			    flex : 1,
			    labelWidth : 80,
			    columns : [{
				      text : T.label.defectCode,
				      dataIndex : 'defectCode'
			      }, {
				      text : T.label.defectDesc,
				      dataIndex : 'defectDesc'
			      }],
			    store : {
				    store : 'json',
				    autoLoad : true,
				    autoDestory : true,
				    fields : ['defectCode', 'defectDesc'],
				    proxy : {
					    type : 'zbusrpc',
					    module : 'BasViewCommonDataSetupDetailService',
					    extraParams : {
						    groupName : 'QC_DEFECT_ITEMS'
					    },
					    reader : {
						    type : 'json',
						    root : 'cdsDtlList'
					    }
				    }
			    }
		    });
		  this.chkCanStore = Ext.create('Ext.form.field.Checkbox', {
			    fieldLabel : T.label.canStore,
			    labelWidth : 80,
			    flex : 1
		    });
		  this.chkCanRework = Ext.create('Ext.form.field.Checkbox', {
			    fieldLabel : T.label.canRework,
			    labelWidth : 80,
			    flex : 1
		    });
		  this.chkCanPrint = Ext.create('Ext.form.field.Checkbox', {
			    fieldLabel : T.label.canPrint,
			    labelWidth : 80,
			    flex : 1
		    });
		  this.chkCanReset = Ext.create('Ext.form.field.Checkbox', {
			    fieldLabel : T.label.canReset,
			    labelWidth : 80,
			    flex : 1
		    });
		  this.numNgCycle = Ext.create('Ext.form.field.Number', {
			    fieldLabel : T.label.ngCycle,
			    labelWidth : 80,
			    flex : 1,
			    minValue : 0,
			    maxValue : 100,
			    value : 0
		    });
		  this.chkStartEnd = Ext.create('Ext.form.field.Checkbox', {
			    fieldLabel : T.label.startEnd,
			    labelWidth : 80,
			    flex : 1
		    });
		  this.chkAutoMove = Ext.create('Ext.form.field.Checkbox', {
			    fieldLabel : T.label.autoMove,
			    labelWidth : 80,
			    flex : 1
		    });
		  this.btnSave = Ext.create('Ext.button.Button', {
			    text : T.label.save,
			    itemId : 'btnSave',
			    iconCls : 'icon-disk',
			    scope : this,
			    handler : this.onBtnSaveClicked
		    });
		  this.btnDelete = Ext.create('Ext.button.Button', {
			    text : T.label.del,
			    itemId : 'btnDelete',
			    iconCls : 'icon-delete',
			    scope : this,
			    handler : this.onBtnDeleteClicked
		    });
		  this.btnReset = Ext.create('Ext.button.Button', {
			    text : T.label.reset,
			    itemId : 'btnReset',
			    iconCls : 'icon-clear',
			    scope : this,
			    handler : this.onBtnResetClicked
		    });
		  this.frmOperate = Ext.create('Ext.form.Panel', {
			    title : T.label.operate,
			    flex : 1,
			    tbar : {
				    items : [this.btnSave, this.btnDelete, this.btnReset]
			    },
			    items : [{
				      xtype : 'fieldcontainer',
				      layout : 'hbox',
				      anchor : '100%',
				      defaults : {
					      cls : 'marginL3'
				      },
				      items : [this.txtOper, this.txtOperDesc, this.cmbSegment]
			      }, {
				      xtype : 'fieldcontainer',
				      layout : 'hbox',
				      anchor : '100%',
				      defaults : {
					      cls : 'marginL3'
				      },
				      items : [this.cmbOperType, this.txtErpOper, this.txtErpOperDesc]
			      }, {
				      xtype : 'fieldcontainer',
				      layout : 'hbox',
				      anchor : '100%',
				      defaults : {
					      cls : 'marginL3'
				      },
				      items : [this.chkCanRepair, this.sfDefaultDefect, this.chkCanStore]
			      }, {
				      xtype : 'fieldcontainer',
				      layout : 'hbox',
				      anchor : '100%',
				      defaults : {
					      cls : 'marginL3'
				      },
				      items : [this.chkCanRework, this.chkCanPrint, this.chkCanReset]
			      }, {
				      xtype : 'fieldcontainer',
				      layout : 'hbox',
				      anchor : '100%',
				      defaults : {
					      cls : 'marginL3'
				      },
				      items : [this.numNgCycle, this.chkStartEnd, this.chkAutoMove]
			      }]
		    });

		  this.gridOperate = Ext.create('Ext.grid.Panel', {
			    title : T.label.operation,
			    flex : 1,
			    columns : [{
				      text : T.label.operation,
				      dataIndex : 'oper',
				      width : 100
			      }, {
				      text : T.label.operationDesc,
				      dataIndex : 'operDesc',
				      width : 200
			      }],
			    store : Ext.create('Ext.data.JsonStore', {
				      fields : ['oper', 'operDesc', 'segment', 'operType', 'erpOper',
				        'erpOperDesc', 'defaultDefectCode', 'canRepair', 'canStore',
				        'canRework', 'canPrint', 'canReset', 'startEnd', 'autoMove', {
					        type : 'number',
					        name : 'ngCycle'
				        }],
				      proxy : {
					      type : 'zbusrpc',
					      module : 'SmfrViewOperationService',
					      reader : {
						      root : 'operList'
					      }
				      }
			      }),
			    listeners : {
				    scope : this,
				    select : this.onGridOperatonSelect
			    }
		    });

		  this.items = [this.frmOperate, {
			    width : 380,
			    layout : {
				    type : 'vbox',
				    align : 'stretch'
			    },
			    items : [this.gridOperate],
			    bbar : {
				    xtype : 'pagingtoolbar',
				    displayInfo : true,
				    store : this.gridOperate.getStore()
			    }
		    }];

		  this.callParent();
	  },
	  onBtnSaveClicked : function(btn) {
		  if (!this.frmOperate.getForm().isValid()) {
			  return;
		  }

		  var parm = {
			  oper : this.txtOper.getValue(),
			  operDesc : this.txtOperDesc.getValue(),
			  segment : this.cmbSegment.getValue(),
			  operType : this.cmbOperType.getValue(),
			  erpOper : this.txtErpOper.getValue(),
			  erpOperDesc : this.txtErpOperDesc.getValue(),
			  defaultDefectCode : this.sfDefaultDefect.getValue(),
			  canRepair : this.chkCanRepair.getValue() ? 'Y' : 'N',
			  canStore : this.chkCanStore.getValue() ? 'Y' : 'N',
			  canRework : this.chkCanRework.getValue() ? 'Y' : 'N',
			  canPrint : this.chkCanPrint.getValue() ? 'Y' : 'N',
			  canReset : this.chkCanReset.getValue() ? 'Y' : 'N',
			  ngCycle : this.numNgCycle.getValue(),
			  startEnd : this.chkStartEnd.getValue() ? 'Y' : 'N',
			  autoMove : this.chkAutoMove.getValue() ? 'Y' : 'N'
		  };

		  var me = this;
		  Ext.Msg.show({
			    title : T.label.save,
			    msg : T.msg.are_you_sure_to_save_data,
			    icon : Ext.Msg.QUESTION,
			    buttons : Ext.Msg.YESNO,
			    fn : function(btnId) {
				    if (btnId == 'yes') {
					    btn.disable();

					    YX.ZbusRpc.request({
						      module : 'SmfrSaveOperationService',
						      params : parm,
						      callback : function() {
							      btn.enable();
						      },
						      success : function() {
							      me.frmOperate.getForm().reset();
							      me.gridOperate.getStore().loadPage(1);
						      }
					      });
				    }
			    }
		    });
	  },
	  onBtnDeleteClicked : function(btn) {
		  var rcds = this.gridOperate.getSelectionModel().getSelection();
		  if (Ext.isEmpty(rcds)) {
			  return;
		  }

		  var parm = {
			  oper : rcds[0].get('oper'),
			  operDesc : rcds[0].get('operDesc'),
			  operStatus : 'D'
		  };

		  var me = this;
		  Ext.Msg.show({
			    title : T.label.del,
			    msg : T.msg.are_you_sure_to_delete_data,
			    icon : Ext.Msg.QUESTION,
			    buttons : Ext.Msg.YESNO,
			    fn : function(btnId) {
				    if (btnId == 'yes') {
					    btn.disable();

					    YX.ZbusRpc.request({
						      module : 'SmfrSaveOperationService',
						      params : parm,
						      callback : function() {
							      btn.enable();
						      },
						      success : function() {
							      me.frmOperate.getForm().reset();
							      me.gridOperate.getStore().loadPage(1);
						      }
					      });
				    }
			    }
		    });
	  },
	  onBtnResetClicked : function(btn) {
		  this.frmOperate.getForm().reset();
		  this.txtOper.focus();
	  },
	  onGridOperatonSelect : function(sm, record) {
		  this.fillData(record.getData());
	  },
	  onTxtOperBlur : function(field) {
		  if (field.getValue() !== '') {
			  YX.ZbusRpc.request({
				    module : 'SmfrViewOperationService',
				    scope : this,
				    params : {
					    oper : field.getValue()
				    },
				    success : function(rsp) {
					    if (!Ext.isEmpty(rsp.operList)) {
						    this.fillData(rsp.operList[0]);
					    }
				    }
			    });
		  }
	  },
	  fillData : function(data) {
		  if (!data) {
			  return;
		  }
		  this.txtOper.setValue(data.oper);
		  this.txtOperDesc.setValue(data.operDesc);
		  this.cmbSegment.setValue(data.segment);
		  this.cmbOperType.setValue(data.operType);
		  this.txtErpOper.setValue(data.erpOper);
		  this.txtErpOperDesc.setValue(data.erpOperDesc);
		  this.chkCanRepair.setValue(data.canRepair === 'Y');
		  this.sfDefaultDefect.setValue(data.defaultDefectCode);
		  this.chkCanStore.setValue(data.canStore === 'Y');
		  this.chkCanRework.setValue(data.canRework === 'Y');
		  this.chkCanPrint.setValue(data.canPrint === 'Y');
		  this.chkCanReset.setValue(data.canReset === 'Y');
		  this.numNgCycle.setValue(data.ngCycle);
		  this.chkStartEnd.setValue(data.startEnd === 'Y');
		  this.chkAutoMove.setValue(data.autoMove === 'Y');
	  }
  });